Lecture 9 - Cryptography

الفكرة العامة

علم التشفير (Cryptography) هو الفن والعلم اللي بنستخدم فيه معادلات رياضية عشان نحمي بياناتنا. الفكرة ببساطة إننا بنحوّل الكلام المفهوم (Plaintext) لـ "طلاسم" غير مفهومة (Ciphertext)، عشان نمنع أي حد غير مصرح ليه إنه يقرأ أو يعدل البيانات دي.


1. مصطلحات أساسية (Terminologies)

عشان نفهم التشفير، لازم نكون عارفين لغة المجال:

Plaintext / Cleartext: النص الأصلي المقروء (زي رسالة "مرحبا").
Ciphertext: النص المُشفر أو الطلاسم (الرسالة بعد ما اتشفرت).
Encryption: عملية التشفير (تحويل الـ Plaintext لـ Ciphertext).
Decryption: عملية فك التشفير (تحويل الـ Ciphertext لـ Plaintext تاني).
Cipher: الخوارزمية (Algorithm) أو الخطوات اللي بنمشي عليها عشان نشفر أو نفك التشفير.
Key: المفتاح المستخدم في معادلة التشفير.
Cryptanalysis: علم تحليل و كسر التشفير (الناس اللي بتعمل كده اسمهم Attackers أو Cryptanalysts).
Cryptology: العلم الشامل اللي بيضم التشفير (Cryptography) وكسر التشفير (Cryptanalysis) مع بعض.

مكونات أي نظام تشفير (Cryptosystem)

النص الأصلي (Plaintext) ⬅️ خوارزمية ومفتاح التشفير ⬅️ النص المشفر (Ciphertext) ⬅️ خوارزمية ومفتاح فك التشفير ⬅️ النص الأصلي يرجع تاني.


2. أهداف التشفير (Goals of Cryptography)

التشفير مش بس بيخبي البيانات، ده بيحقق 4 أهداف أساسية:
1.ا Confidentiality (السرية): محدش يقدر يقرأ البيانات غير الشخص المقصود.
2.ا Integrity (السلامة): البيانات ماتتعدلش في السكة بدون ما نكتشف.
3.ا Authentication (الموثوقية): التأكد من هوية الشخص اللي باعت الرسالة.
4.ا Non-repudiation (عدم الإنكار): المرسل ميقدرش ينكر إنه بعت الرسالة.


3. أنواع خوارزميات التشفير (Encryption Types)

فيه مدرستين كبار في عالم التشفير بنقسمهم حسب "المفتاح" المستخدم:

وجه المقارنة Symmetric Encryption (التشفير المتماثل) Asymmetric Encryption (التشفير غير المتماثل)
عدد المفاتيح مفتاح واحد فقط (نفس المفتاح للتشفير وفك التشفير) مفتاحين (Public Key للتشفير، و Private Key لفك التشفير)
التكلفة والسرعة أسرع وأقل تكلفة (Cost effective) أبطأ وأكثر تكلفة (More costly)
الأمان الفكرة كلها إنك إزاي تنقل المفتاح ده للطرف التاني بأمان! أكثر أماناً (لأن الـ Private Key بيفضل معاك ومبيتبعتش لحد)
مثال للتوضيح قفل بمفتاح واحد، بتعمل منه نسخة وتديها لصاحبك. صندوق بريد مقفول؛ أي حد يقدر يحط رسالة فيه (Public)، بس إنت الوحيد اللي معاك المفتاح تفتحه (Private).

4. خوارزميات التشفير الكلاسيكية (Classical Ciphers)

دي طرق التشفير القديمة اللي كانت بتعتمد على تبديل الحروف، وهي أساس فهم التشفير الحديث:

أ. تشفير قيصر (Caesar Shift Cipher)

مثال على Caesar Cipher (Shift = 3)

النص الأصلي: TREATY IMPOSSIBLE
طريقة التشفير: هنحرك كل حرف 3 خطوات (الـ A تبقى D، الـ T تبقى W).
النص المشفر: WUHDWB LPSRVVLEOH

ب. تشفير ROT13

ج. تشفير Atbash

د. تشفير Playfair (Playfair Cipher) بالتفصيل

تشفير Playfair بيعتمد على تحويل الحروف لـ أزواج (حرفين حرفين) وتشفيرهم باستخدام شبكة 5x5.

1. تكوين الشبكة (The Grid)

بنرص حروف الأبجدية الإنجليزية في جدول 5×5. وبما إن الحروف 26، بندمج حرفي الـ (I و J) في مربع واحد عشان يبقوا 25.
(بدون استخدام مفتاح، الشبكة بتكون مترتبة أبجدياً كده):

1 2 3 4 5
1 A B C D E
2 F G H I/J K
3 L M N O P
4 Q R S T U
5 V W X Y Z

2. تجهيز الكلمة قبل التشفير

أمثلة لتجهيز الكلمات:

  • كلمة WORLD: هتتقسم لـ WO و RL والـ D لوحدها هنزودلها X تبقى DX. (النتيجة: WO RL DX)
  • كلمة HELLO: هتتقسم لـ HE، بعدين يقابلنا LL فنبدلهم بـ X تبقى LX، ويتبقى OX. (النتيجة: HE LX OX)

بص علي جدول الحروف وحاول تتخيل معايا عشان مش هقعد ارسم

3. قواعد التشفير (بنبص على مكان الحرفين في الجدول)

القاعدة الأولى: لو الحرفين في "نفس الصف" ➡️ (بناخد الحرف اللي يمين كل واحد)

القاعدة التانية: لو الحرفين في "نفس العمود" ⬇️ (بناخد الحرف اللي تحت كل واحد)

القاعدة التالتة: لو الحرفين بيعملوا "مستطيل" 🔀 (بناخد الزوايا العكسية)

هـ. خوارزمية هيل (Hill Algorithm) بالتفصيل

دي طريقة رياضية متقدمة بتعتمد على الجبر الخطي وضرب المصفوفات (Matrix Multiplication).
الفكرة إننا مش بنشفر حرف بحرف لوحده، لأ إحنا بناخد "مجموعة حروف" مع بعض (مثلاً كل 3 حروف) ونضربهم في مصفوفة (هي دي المفتاح) عشان نطلع 3 حروف مشفرين مختلفين تماماً.

خطوات التشفير:

  1. تحويل الحروف لأرقام: بنرقم الأبجدية الإنجليزية من 0 لـ 25.
    • (A=0, B=1, C=2, ..., Z=25).
  2. تقسيم الكلمة: بنقسم الكلمة لمجموعات (حسب حجم مصفوفة المفتاح، غالباً كل 3 حروف مع بعض).
  3. تطبيق معادلة التشفير: C=(P×K)(mod26)
    • P: مصفوفة النص الأصلي (Plaintext).
    • K: مصفوفة المفتاح (Key Matrix).
    • (mod26): بنجيب "باقي القسمة" على 26 (عشان الناتج يفضل دايماً رقم من 0 لـ 25 ونقدر نحوله لحرف).
  4. تحويل الأرقام لحروف: الأرقام الناتجة بنرجعها حروف تاني فنجيب النص المشفر.

!Pasted image 20260520005839.png

مثال تطبيقي من المحاضرة

الهدف: تشفير كلمة pay (وهي جزء من رسالة paymoremoney).

الخطوة 1: نحول pay لأرقام:

  • p = 15
  • a = 0
  • y = 24
    إذن مصفوفة الكلمة P هي: [15, 0, 24]

الخطوة 2 & 3: نضرب P في مصفوفة المفتاح K (الرقم السري المتفق عليه)، ونجيب الناتج (mod26).
حسب المثال في المحاضرة، الأرقام الناتجة طلعت: [17, 17, 11]

الخطوة 4: نرجع الأرقام الجديدة لحروف:

  • 17 = R
  • 17 = R
  • 11 = L

النتيجة: كلمة pay اتشفرت وبقت RRL!

فك التشفير (Decryption)

عشان نرجع الرسالة لأصلها، بنستخدم نفس الطريقة بس بنعكس المفتاح.
بنضرب النص المشفر C في معكوس مصفوفة المفتاح (K1).
المعادلة: P=(C×K1)(mod26)

!Pasted image 20260520005915.png


Nour Eldeen Mahmoud


Powered by Forestry.md